package com.tedu.api.thread;
/**
 *
 *  线程--创建3种
 *  第一种：子类  继承Thread  方案--【使用率不多】
 *         ①编写子类 MyThread 继承Thread
 *        ②子类，重写run方法
 *         ③实例化 MyThread1对象 调用 start方法【启动线程】
 *  第二种：子类  实现Runnable 接口 方案--【推荐用法】
 *         ①编写子类MyRunnable1 实现Runnable 接口
 *         ②子类，强制重写run方法【线程运行】
 *         ③实例化MyRunnable1 【没有start方法】
 *         ④创建Thread对象，把实例化MyRunnable1  对象通过构造器
 *         ⑤调用Thread对象  start方法
 *  线程 继承Thread 内嵌入Runnable接口  重写run方法
 *  JavaOOP---缺点：Java单继承，子类继承Thread，
 *  无法拓展：不仅线程，其他集合，继承其他类，只具备线程功能
 *  启动线程方法  start()----线程生命周期
 *  缺点：线程创建编写不明确
 *  实现Runnable 真正线程运行---定义run方法，线程运行状态
 *  优点：继承还可以实现--拓展性高
 *  缺点：线程创建不方便---项目：步骤逻辑清晰
 *  第三种：匿名内部类实现线程--->Lambda表达式
 *
 *  JavaOOP：封装---内部类：成员内部类，方法内部类，静态内部类，匿名内部类
 *  匿名内部类创建方式
 *  对象  引用=new 对象(){};
 *  匿名内部类---创建一次===子实现类实例化一次Thread/Runnable
 *             优点：省去子类对象名称---接口创建，抽象类创建！
 *
 */
public class TR {
public static void main(String[] args) {
//1.类只需要实例化一次：匿名内部类---Thread
Thread t1=new Thread(){
public void run(){
for (int i=0; i<1000;i++){
    System.out.println("宋孜煊会中五百万！");
}
}
};
t1.start();
//2.类只需要实例化一次：匿名内部类---Runnable
Thread t2=new Thread(new Runnable(){
public void run() {
for(int i=0;i<1000;i++){
System.out.println("Baby take it slow");
}
}
});
t2.start();
}
}

